home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / ien / ien-151 < prev    next >
Text File  |  1988-12-01  |  17KB  |  406 lines

  1.  
  2. IEN 151                                                        Vint Cerf
  3.                                                               DARPA/IPTO
  4.                                                               1 April 80
  5.  
  6.                       FINAL REPORT OF THE STANFORD
  7.                          UNIVERSITY TCP PROJECT
  8.  
  9.                              Vinton G. Cerf
  10.                               1 April 1980
  11.  
  12. ABSTRACT:
  13.  
  14. This report provides a brief historical and technical summary of the
  15. Stanford University internet, host-to-host Transmission Control Protocol
  16. (TCP) project.  Developed from 1973-1976 at Stanford, Bolt Beranek and
  17. Newman and University College London, the effort then continued at other
  18. research and development centers during 1977-1980.  Originally designed
  19. as a monolithic internet protocol, the internet aspects were separated
  20. into a distinct protocol layer in early 1979 with the publication of
  21. version 4 of TCP.  The resulting pair of protocols, TCP4 and Internet
  22. Protocol (IP) are now undergoing procedures for standardization within
  23. the DoD and Intelligence Community.  The four most valuable results of
  24. the Stanford effort were the assessment of which functions could or
  25. should be implemented in the protocol and which should not, the
  26. implementation of an efficient, assembly-language version of TCP for an
  27. LSI-11 computer, the development of a "micro" operating system (MOS) for
  28. the same computer, and the specification of the TCP protocol.
  29.  
  30. 1.  Introduction:
  31.  
  32. The Stanford TCP project was supported by the Defense Advanced Research
  33. Projects Agency (DARPA) under contract No. DAHC 15-73-C-0363 and
  34. MDA903-76-C-0206, ARPA Order No. 2494 during the period 1 July 1973 to
  35. 30 September 1976.  During the time that the project was at Stanford,
  36. two versions of TCP were developed, one in December 1974 [1] and another
  37. which was published in March 1977 [2], by DARPA.  Since that time, two
  38. other versions of TCP were developed, one n December 1974 [1] and
  39. another which was published in March 1977 [2], by DARPA.  Since that
  40. time, two other versions have been published, versions 3 and 4 [3,4] in
  41. January 1978 and February 1979, respectively.  Editing of these latter
  42. versions was the responsibility of J. Postel, Information Sciences
  43. Institute, University of Southern California. Intermediate versions were
  44. published in July 1976 [5], July 1978 [6], and August 1979 [7].  The
  45. July 76 version was developed for the Defense Communication Agency by J.
  46. Postel, L. Garlic, and R. Ram of Stanford Research Institute for the
  47. Defense Communication Agency in connection with the AUTODIN II project.
  48. The final versions of TCP and Internet Protocol were published in
  49. January, 1980 [14,15] by DARPA on behalf of the Defense Communication
  50. Agency.
  51.  
  52. During the course of the DARPA Interneting program, which supported the
  53.  
  54.  
  55.  
  56. Cerf                                                            [Page 1]
  57.  
  58.  
  59.                                                             1 April 1980
  60. IEN 151
  61.  
  62.  
  63. TCP development, a great many people and groups were involved in or
  64. influenced the development of the TCP.
  65.  
  66. The initial impetus for the effort resulted from work by R. Kahn and V.
  67. Cerf, which was published in May 1974 [8], but whose basic roots were
  68. already known in September 1973 [9].
  69.  
  70. An initial design for TCP was worked out during 1973-74 at Stanford
  71. among V. Cerf, Y. Dalal, C. Sunshine and R. Karp, with the participation
  72. of R. Tomlinson [Bolt Beranek and Newman], W. Plummer [BBN], R. Metcalfe
  73. [Xerox PARC] and D. Boggs [Xerox PARC].  Implementation, testing and
  74. further development were carried out jointly at Stanford with J. Mathis
  75. and J. Estrin, Bolt Beranek and Newman, and University College London
  76. [F. Deignan, C. J. Bennett, A. J. Hinchley and M. Galland.]  Visiting at
  77. Stanford during this initial development period were G. LeLann
  78. [University of Rennes, France] and D. Belsnes [University of Oslo] who
  79. provided additional philosophical leavening which influenced the design
  80. of the protocol.
  81.  
  82. By 1976, implementations had been written for the Tenex/PDP-10
  83. [Tomlinson, Plummer - in BCPL], ELF/PDP-11 [Tomlinson, Plummer - in
  84. BCPL; Karp, Dalal, Cerf - BCPL], LSI-11 [Mathis - assembly language],
  85. PDP-9 [Deignan - BABBAGE] and some performance experience obtained [10].
  86.  
  87. Since then, implementations have been for UNIX [M. Wingfield - "c"; J.
  88. Haverty - assembly language], MOS 360 [B. Braden - assembly language],
  89. Multics [D. Clark - PL/1], TOPS-20 [W. Plummer - assembly language], and
  90. NORD-10 [A. Stensby].
  91.  
  92. 2.  TECHNICAL ISSUES
  93.  
  94. The initial concept behind TCP was very simple.  Two processes wishing
  95. to communicate had only to know the other's "address".  Data would be
  96. accounted for in 8-bit octets, and sequence numbers would be used to
  97. re-order the received data at the destination, if necessary.  The first
  98. packet would have a special synchronization flag ["SYN"] which would
  99. alert the receiver that the sender's sequence numbers would start with
  100. the one associated with data sequence numbers so that end to end
  101. acknowledgments for data could also be used to acknowledge control.  If
  102. resynchronization were needed, the sender could simply send another
  103. "SYN" packet.  There would be no use for a "connection set-up" in the
  104. conventional sense.  Finally, packet formats would permit internet
  105. gateways to fragment packets into identically formatted, smaller packets
  106. if necessary, to get through a net with a smaller packet size.
  107. Reassembly of fragments would be done by the destination.
  108.  
  109. An initial implementation of the protocol by Tomlinson and Plummer was
  110. used to control a line printer which was supposed to spool output from a
  111. host computer onto paper.  The first obvious problem which cropped up
  112.  
  113.  
  114. Cerf                                                            [Page 2]
  115.  
  116.  
  117.                                                             1 April 1980
  118. IEN 151
  119.  
  120.  
  121. was an inability to distinguish an old duplicate SYN packet (created by
  122. retransmissions in the absence of an acknowledgments) from a new SYN
  123. packet which is trying to start a new sequence.
  124.  
  125. This problem was documented in [11-13] and the solution proposed was
  126. called the "three-way" handshake" by its inventor, Ray S. Tomlinson.
  127. This addition to the original proposed protocol [8] was probably the
  128. most major change to its philosophy, since it introduced an explicit
  129. connection "set-up" exchange at the beginning to allow both ends to
  130. validate the connection sequence numbers. Basically, each end selects a
  131. starting sequence number, and receives both an acknowledgments and an
  132. indication of the start of the other end's sequence space.  This
  133. validating exchange is intended to help each end distinguish old,
  134. duplicate SYNs from recent ones.  For this to work correctly, some
  135. maximum throughput, so as to be able to select a suitably-sized sequence
  136. number space. In the end, a 32 bit sequence space was selected which
  137. would not wrap around for about 4 hours at 2 megabits/second.
  138.  
  139. An alternative to the three-way handshake was examined in 1978 by D.
  140. Reed at MIT [16], in which the initiator of a "connection" employs a
  141. unique, non-reusable "socket identifier" as a way of distinguishing new
  142. from old connection requests.  These identifiers are needed in TCP also,
  143. to distinguish among multiple connections, but the socket numbers are
  144. allowed to be reused, leading to the need to use sequence numbers and
  145. the three-way handshake to distinguish old from new connection requests.
  146. The strategy proposed by Reed required some non-volatile supply of new
  147. socket identifiers which would either never recur, or recur at such long
  148. cycles (days, weeks...) that there would never be any confusion or
  149. duplication of use.  Obvious, if the socket identifiers cycled too
  150. quickly, a particular identifier might present itself for use anew while
  151. it was still in use on some connection.  This idea was considered for
  152. TCP in 1978, but was not pursued as it created problems of "dangling,
  153. half-open server connections" when things went wrong.
  154.  
  155. The second major issue had to do with the resynchronization of a
  156. connection after host failure.  A variety of techniques were exploded
  157. and designed in detail.  In the final TCP design, a simple strategy for
  158. recovering from "half-open" connections was developed.
  159.  
  160. A hazard was found, however, based on violation of the assumption that
  161. sequence numbers would be consumed at no more than some maximum rate.
  162. If a connect stayed idle for a long enough period, the basic "initial
  163. sequence number" selection strategy outlined in [11-13] would encounter
  164. a hazard if the host failed just as the "next sequence number" to use
  165. fell into the so-called initial sequence number "forbidden zone".  A
  166. complex set of tests were defined to catch this case, but required
  167. action on each packet transmitted to determine whether the hazardous
  168. "forbidden" zone had been entered.  If so, the sequence numbers on the
  169. connection would be re-synchronized to skip around the danger area.  The
  170.  
  171.  
  172. Cerf                                                            [Page 3]
  173.  
  174.  
  175.                                                             1 April 1980
  176. IEN 151
  177.  
  178.  
  179. probability of the hazard actually occurring was judged to be quite
  180. small, and finally these tests were eliminated, vastly simplifying the
  181. TCP definition and implementation.
  182.  
  183. The third critical issue had to do with the treatment of packets which
  184. required fragmentation to pass through a network.  Gateways between nets
  185. were postulated which could detect that an incoming packet was too large
  186. to fit encapsulated in the packet format of the next network.
  187.  
  188. A fragmentation strategy was developed which permitted an internet
  189. packet to be fragmented into smaller packets and marked in such a way
  190. that the resulting fragments could be routed independently of one
  191. another and could still be reassembled at the final destination.
  192.  
  193. A major change to the TCP philosophy occurred when the basic interneting
  194. func tions (addressing, fragmentation and type of service selection)
  195. were separated from the end to end functions of TCP (sequencing,
  196. retransmission, duplicate detection, flow control and port
  197. multiplexing).  At this point, the fragmentation problem was
  198. substantially simplified since it applied only to the internet packets
  199. and limited knowledge of protocols to the IP layer in the gateway.
  200.  
  201. At the same time, this permitted other higher level protocols, adjacent
  202. to the TCP layer, to rely on the special services, including
  203. fragmentation and reassembly, of the IP protocol layer.
  204.  
  205. Network Security
  206.  
  207. The TCP concepts were applied to the ARPA network security program and
  208. an architecture was developed which accommodated the use of TCP as an
  209. end to end protocol, below which, end to end encryption could take
  210. place.  This architecture became even simpler when the TCP was split
  211. from the internet protocol functions since security was provided at the
  212. IP level, allowing many different transport protocols, in addition to
  213. TCP, to be secured by the same basic system.
  214.  
  215. Implementation and Experimentation
  216.  
  217. Two TCPs were developed during this project:
  218.  
  219.    1.  BCPL for PDP-11 under ELF operating system.
  220.  
  221.    2.  Assembly Language for LSI-11 under MOS operating system.
  222.  
  223. The former was useful for high-level description of the TCP
  224. functionality but was never very efficient.  Extensive performance tests
  225. and timing analyses revealed that 75-80% of the overhead for the BCPL
  226. TCP running under ELF was attributable to either the slow interprocess
  227.  
  228.  
  229.  
  230. Cerf                                                            [Page 4]
  231.  
  232.  
  233.                                                             1 April 1980
  234. IEN 151
  235.  
  236.  
  237. communication system in ELF or the inefficient "Reliable Transmission
  238. Protocol" for the Very Distant Host interface to ARPANET.
  239.  
  240. The RTP introduced a minimum round-trip time to the IMP and back of some
  241. 50 ms, limiting packet rates to about 20 packets/second.
  242.  
  243. Performance tests conducted with a Babbage implementation at University
  244. College London [10] were even less satisfactory due to buffer
  245. limitations in the London PDP-9 computer and the very lengthy cross-net
  246. delays imposed by a 9.6 kb/s satellite circuit connecting London to the
  247. U.S. by way of Norway.  The best packet rate we could sustain was about
  248. 2-3 packets/second.
  249.  
  250. We found a significant improvement in performance to be possible upon
  251. using ARPANET "type 3" packets which are not limited to 8 outstanding
  252. messages as is normal ARPANET traffic.  However, this mode of operation,
  253. if stressed, caused serious network congestion problems.
  254.  
  255. To determine whether the limited performance of TCP was a design flaw,
  256. we implemented an assembly language version in about 1200 words of
  257. LSI-11 memory running under a small, 800 word micro-operating system.
  258. This version, while compatible with our 12,000 word BCPL version on ELF,
  259. was one tenth the size and achieved 37 kb/s on the LSI-11 and 50 kb/s on
  260. the PDP-11/20.
  261.  
  262. The LSI-11 version was subsequently integrated in to the packet radio
  263. network at SRI as part of a Terminal Interface Unit.
  264.  
  265. Conclusions
  266.  
  267. This project successfully developed, implemented, documented and tested
  268. a reliable, internet work, host-to-host protocol, capable of operating
  269. in extremely hostile environments and able to recover from catastrophic
  270. failures in a graceful fashion.
  271.  
  272. The adoption of the protocol for DoD use in packet networking is an
  273. indication of the far-reaching impact of this research.
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288. Cerf                                                            [Page 5]
  289.  
  290.  
  291.                                                             1 April 1980
  292. IEN 151
  293.  
  294.  
  295. REFERENCES
  296.  
  297. 1.   Cerf V., Y. K. Dalal, C. A. Sunshine, "Specification of Internet
  298.      Transmission Control Program", INWG General Note 72, IFIP Working
  299.      Group 6.1, December 1974.
  300.  
  301. 2.   Cerf. V., "Specification of Internet Transmission Control Program -
  302.      TCP (Version 2)", March
  303.  
  304. 3.   Cerf. V., J. Postel (eds), "Specification of Internetwork
  305.      Transmission Control Program - TCP (Version 3)", January 1978.
  306.  
  307. 4.   J. Postel (ed), 'Transmission Control Protocol - TCP (Version 4)",
  308.      February 1979.
  309.  
  310. 5.   J. B. Postel, L. L. Garlic, R. Rom, "Transmission Control Protocol
  311.      Specification", Augmentation Research Center, Stanford Research
  312.      Institute, Menlo Park, CA 15 July 1976 [for the U.S. Defense
  313.      Communications Agency in connection with AUTODIN II].
  314.  
  315. 6.   "Specification of Internetwork Transmission Control Program - TCP
  316.      (Version 3.1)", July 1978.
  317.  
  318. 7.   DARPA, "Transmission Control Protocol, Version 4", August 1979
  319.      [edited by J. Postel].
  320.  
  321. 8.   Cerf, V. G. and R. E. Kahn, "A Protocol for Network
  322.      Intercommunication", IEEE Transactions on Communications, Vol.
  323.      Com-22, No. 5, May 1974.
  324.  
  325. 9.   Cerf, V. and R.E. Kahn, "Proposed Protocol for Internet
  326.      Host-to-Host Communication", INWG Note No. 39, September 1973.
  327.  
  328. 10.  Bennett, C. J. and A. J. Hinchley, "Quantitative Measurements of
  329.      the Transmission Control Protocol", Proceedings of the Int'l
  330.      Conference on Protocols, Andre Danthine [ed].
  331.  
  332. 11.  Tomlinson, R.S., "Selecting Sequence Numbers", INWG Protocol Note
  333.      No. 2, August 1974; Proceedings of the ACM SIGCOMM/SIGOPS
  334.      Interprocess Communication Workshop, (Santa Monica, CA, March
  335.      24-25, 1975) and ACM Operating Systems Review, Vol. 9, No. 3, July
  336.      1975, Association for Computing Machinery, New York, 1975.
  337.  
  338. 12.  Dalal, Yoden, K., "More on Selecting Sequence Numbers", INWG
  339.      Protocol Note, No. 4 IFIP Working Group 6.1, August 1974; also, in
  340.      Proceeding of the ACM SIGCOMM/SIGOPS Interprocess Communications
  341.      Workshop, (Santa Monica, CA, March 24-25, 1975) and ACM Operating
  342.      Systems Review, Vol. 9, No. 3, July 1975, Association for Computing
  343.      Machinery, New York, 1975.
  344.  
  345.  
  346. Cerf                                                            [Page 6]
  347.  
  348.  
  349.                                                             1 April 1980
  350. IEN 151
  351.  
  352.  
  353. 13.  Dalal, Yogen K., "Establishing a Connection", INWG Protocol Note
  354.      14, IFIP Working Group 6.1, March 1975.
  355.  
  356. 14.  DARPA, "DoD Standard Transmission Control Protocol", (J. Postel,
  357.      ed.) January 1980.
  358.  
  359. 15.  DARPA, "DoD Standard Internet Protocol", (J. Postel, ed.), January
  360.      1980.
  361.  
  362. 16.  Reed, David P., "Naming and Synchronization in a Decentralized
  363.      Computer System", MIT Report LCS/TR-205, September, 1978.
  364.  
  365. 17.  Sunshine, C., "Interprocess Communication Protocols for Computer
  366.      Networks", Ph.D. Dissertation, Stanford University, December 1975.
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404. Cerf                                                            [Page 7]
  405.  
  406.